from pyspark.context import SparkContext


if __name__ == '__main__':
    # 1、创建spark执行环境
    sc = SparkContext(master='local', appName='word_count')

    # 2、读取文件
    # RDD:弹性的分布式数据集
    lines_rdd = sc.textFile("D:\\bigdata35\\data\\word.txt")

    # 3、一行转换成多行
    # flatMap：一行转换成多行的算子
    words_rdd = lines_rdd.flatMap(lambda line: line.split(","))

    # 4、转换成kv格式
    kv_rdd = words_rdd.map(lambda word: (word, 1))

    # 5、统计单词的数量
    # reduceByKey: 对相同key的value进行聚合
    count_rdd = kv_rdd.reduceByKey(lambda x, y: x + y)

    # 保存结果
    result_rdd = count_rdd.map(lambda kv: f"{kv[0]}\t{kv[1]}")
    result_rdd.saveAsTextFile("D:\\bigdata35\\data\\words_count")